//package com.itcast.n3_类的加载器;//package com.itheima.jvm.chapter02.classloader.broken;
//
//import org.apache.commons.io.IOUtils;
//
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.IOException;
//import java.util.regex.Matcher;
//
///**
// * 打破双亲委派机制 - 自定义类加载器
// */
//
//public class Test11_打破类的双亲委派机制1_自定义类加载器_加载java开头的类报错 extends ClassLoader {
//
//    private String basePath;
//    private final static String FILE_EXT = ".class";
//
//    public void setBasePath(String basePath) {
//        this.basePath = basePath;
//    }
//
//    private byte[] loadClassData(String name)  {
//        try {
//            String tempName = name.replaceAll("\\.", Matcher.quoteReplacement(File.separator));
//            FileInputStream fis = new FileInputStream(basePath + tempName + FILE_EXT);
//            try {
//                return IOUtils.toByteArray(fis);
//            } finally {
//                IOUtils.closeQuietly(fis);
//            }
//
//        } catch (Exception e) {
//            System.out.println("自定义类加载器加载失败，错误原因：" + e.getMessage());
//            return null;
//        }
//    }
//
//    @Override
//    public Class<?> loadClass(String name) throws ClassNotFoundException {
//        byte[] data = loadClassData(name);
//        return defineClass(name, data, 0, data.length);
//    }
//
//    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException {
//        Test11_打破类的双亲委派机制1_自定义类加载器_加载java开头的类报错 classLoader1 = new Test11_打破类的双亲委派机制1_自定义类加载器_加载java开头的类报错();
//        classLoader1.setBasePath("E:\\code\\flyduck-note\\jvm\\chapter01\\target\\classes\\");
//
//        //Class<?> clazz1 = classLoader1.loadClass("java.lang.String");//Prohibited package name: java.lang
//        Class<?> clazz1 = classLoader1.loadClass("com.itcast.my.A");//:\code\flyduck-note\jvm\chapter01\target\classes\java\lang\Object.class (系统找不到指定的文件。)
//
//        clazz1.newInstance();
//     }
//}
